package com.situ.skymall.admin.api.service;

import com.situ.model.CnRegionInfo;
import com.situ.utils.JsonResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 地区信息 Feign Service
 */
@FeignClient(name = "skymall-gateway", contextId = "cnRegionInfoFeignService")
public interface CnRegionInfoFeignService {

    /**
     * 获取所有省份数据
     */
    @GetMapping("/api/v1/region/provinces")
    JsonResult<List<CnRegionInfo>> getProvinces();

    /**
     * 获取指定省份下的城市数据
     */
    @GetMapping("/api/v1/region/cities/{provinceCode}")
    JsonResult<List<CnRegionInfo>> getCities(@PathVariable("provinceCode") String provinceCode);

    /**
     * 获取指定城市下的区县数据
     */
    @GetMapping("/api/v1/region/districts/{cityCode}")
    JsonResult<List<CnRegionInfo>> getDistricts(@PathVariable("cityCode") String cityCode);

    /**
     * 输入id只返回直接子节点
     */
    @GetMapping("/api/v1/region/tree/{parentId}")
    JsonResult<List<CnRegionInfo>> getRegionTree(@PathVariable("parentId") Integer parentId);

    /**
     * 获取完整地址树
     */
    @GetMapping("/api/v1/region/full-tree/{code}")
    JsonResult<CnRegionInfo> getFullAddressTree(@PathVariable("code") String code);

    /**
     * 根据地区代码获取完整地址信息
     */
    @GetMapping("/api/v1/region/full-address/{code}")
    JsonResult<String> getFullAddress(@PathVariable("code") String code);

    /**
     * 根据名称搜索地区
     */
    @GetMapping("/api/v1/region/search")
    JsonResult<List<CnRegionInfo>> searchRegion(@RequestParam("name") String name);
}
